#pragma once
#include "Windows.h"
#include <string>
#include <functional>

struct Recordable
{
	HWND hwnd;
	std::string name;
	std::string exe_name;
	std::string class_name;
	long width;
	long height;
	HDC hdc;
};

std::string wide_char_to_multi_byte(wchar_t* pWCStrKey);
Recordable get_recordable(HWND _hwnd);
void find_all_recordable_window(std::function<void(Recordable*)> _callback);
void get_window_exe(std::string* _window_exe, HWND _window);
void get_window_class(std::string* _window_class, HWND _window);
std::string get_window_name(HWND _h);
bool check_window_valid(HWND _window);
HWND next_window(HWND _window, HWND _parent);
void release_recordable(Recordable* _recordable);